Application servers are a core component of a multi-tier architecture that has become the industry standard for building scalable client-server applications. A client communicates with a service deployed as a multi-tier application through request-reply transactions. A typical server reply consists of the web page dynamically generated by the application server. The application server can issue multiple database calls while preparing the reply. As a result, understanding application level performance is a challenging task.
Significantly shortened time between new software releases and updates makes it difficult to perform a thorough and detailed performance evaluation of an updated application. The problem is how to efficiently diagnose essential performance changes in the application performance and to provide fast feedback to application designers and service providers.
Additionally, an existing production system can experience a very different workload compared to the one that has been used in testing environment. Furthermore, frequent software releases and application updates make it difficult to perform an accurate performance evaluation of an updated application, especially across all the application transactions.